package servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.Enumeration;

//loadOnStartup 给正整数表示在Tomcat启动是加载此servlet 数字越小优先级越高
//@WebServlet(name = "LifeCycleServlet", value = "/lifeCycle",loadOnStartup = 1)
public class Demo5_LifeCycleServlet extends HttpServlet {

    /**
     * Servlet的构造方法，在使用这个servlet的才创建这个对象
     */
    public Demo5_LifeCycleServlet(){
        System.out.println("我是Servlet的构造方法，Tomcat创建对象的时候执行");
    }


    @Override
    public void init() throws ServletException {
        System.out.println("我是初始化方法，最先被调用且只执行一次");
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println(config.getInitParameter("username"));
        System.out.println(config.getInitParameter("password"));

        System.out.println(config.getServletName());

        Enumeration<String> initParameterNames = config.getInitParameterNames();
        while(initParameterNames.hasMoreElements()){
            System.out.println(initParameterNames.nextElement());
        }
    }

    /**
     * service 相当于 整合了 doGet 和 doPost
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("我是响应客户请求的方法，每请求一次执行一次");
    }

    @Override
    public void destroy() {
        System.out.println("我是销毁方法，在web结束之前最后执行一次");
    }
}
